package com.alibaba.citrus.cr.mn.order.center.facade.function.common;

import com.alibaba.cz.base.tool.page.PageResult;
import com.alibaba.lattice2.epoch.sdk.model.Result;
import com.epoch.app.crb2btradecenter.model.dto.LoadOrderDetailListResponse;
import com.epoch.app.crb2btradecenter.obtcsaleorderlineindex.model.ObtcSaleOrderLineIndex;
import com.epoch.app.mnordercenter.model.dto.SalesOrderAtomPageQueryRequest;

import java.util.List;

/**
 * @author zhangxiaorui
 * @ClassName OrderAtomCreateService2
 * @description: TODO
 * @date 2023/05/17 11:33
 * @version: 1.0
 */
public interface OrderAtomQueryService<QueryList, PageQuery, Response> {

    /**
     * 查询销售订单信息（分页）按单号精准查询
     */
    PageResult<List<Response>> listPage(QueryList orderAtomQueryListRequest);

    default PageResult<List<Response>> listPage(QueryList orderAtomQueryListRequest, String orderCategory) {
        throw new RuntimeException("此方法未被实现");
    }

    /**
     * 查询销售订单信息（仅内部使用）
     */
    PageResult<List<Response>> listPageForInner(QueryList orderAtomQueryListRequest);

    /**
     * 查询销售订单信息（分页）组合查询
     */
    PageResult<List<Response>> page(PageQuery orderAtomPageQueryRequest, String orderTag);

    default PageResult<List<Response>> page(PageQuery orderAtomPageQueryRequest, String orderTag, String orderCategoryCode) {
        throw new RuntimeException("此方法未被实现");
    }

    /**
     * F2B一盘货订单详情批量查询
     */
    default Result<List<ObtcSaleOrderLineIndex>> detailListPage(PageQuery request) {
        throw new RuntimeException("此方法未被实现");
    }

    /**
     * F2B一盘货订单详情批量查询
     */
    default Result<List<ObtcSaleOrderLineIndex>> detailListPage(PageQuery request, String orderCategoryCode) {
        throw new RuntimeException("此方法未被实现");
    }

    /**
     * F2B一盘货订单明细查询内部接口
     */
    default Result<List<ObtcSaleOrderLineIndex>> detailListPageInner(SalesOrderAtomPageQueryRequest request) {
        throw new RuntimeException("此方法未被实现");
    }

    default Result<List<ObtcSaleOrderLineIndex>> pageOrderDetail(SalesOrderAtomPageQueryRequest request) {
        throw new RuntimeException("此方法未被实现");
    }
}